INSIDE THE NVIDIA HOPPER ARCHITECTURE

MICHAEL ANDERSCH & GREG PALMER, GPU ARCHITECTS
作者信息未提供

目录


概述

幻灯片标题“数据中心卓越的性能、可扩展性和安全性”概括了 NVIDIA Hopper 架构在数据中心领域的关键优势。该架构的核心组成部分和优势包括:

数据中心卓越的性能、可扩展性和安全性
数据中心卓越的性能、可扩展性和安全性

H100 助力下一代 AI 和 HPC 突破

H100 GPU 在高性能计算 (HPC)、AI 推理和 AI 训练方面实现了显著的性能飞跃,与 A100 相比有大幅提升。

H100 助力下一代 AI 和 HPC 突破
H100 助力下一代 AI 和 HPC 突破

DGX H100 SuperPod:AI 百亿亿次计算

DGX H100 SuperPod 是专为 AI 百亿亿次(Exascale)计算设计的系统,具备强大的计算和互联能力。

DGX H100 SuperPod:AI 百亿亿次计算
DGX H100 SuperPod:AI 百亿亿次计算

NVIDIA Grace Hopper

NVIDIA Grace Hopper 结合了 Grace CPU 和 Hopper GPU,旨在提供前所未有的性能和内存带宽。

NVIDIA Grace Hopper
NVIDIA Grace Hopper

Hopper H100 Tensor Core GPU

Hopper H100 Tensor Core GPU 采用台积电 4N 工艺制造,拥有 80B 晶体管,并集成了多项创新技术。

Hopper H100 Tensor Core GPU
Hopper H100 Tensor Core GPU

全球首个 HBM3 内存架构

HBM3 内存架构是内存带宽领域的一次重大飞跃,为 H100 带来了突破性的性能。

图表显示了 DRAM 带宽的演进,从 P100 (2016) 的 0.6x 提升到 H100 (2022) 的 3 TB/s,相较于 A100 (2020) 实现了 2x 的 DRAM 带宽提升。

全球首个 HBM3 内存架构
全球首个 HBM3 内存架构

Hopper SM 架构

新型 Hopper SM 架构

Hopper SM 架构引入了多项创新,旨在提高计算效率和数据吞吐量。

新型 Hopper SM 架构
新型 Hopper SM 架构

Hopper 第 4 代 Tensor Core

Hopper 的第 4 代 Tensor Core 在多种数据格式下提供了显著的性能提升,并引入了新的 FP8 格式。

格式 A100 SM (MACs/时钟) dense A100 SM (MACs/时钟) sparse H100 SM (MACs/时钟) dense H100 SM (MACs/时钟) sparse 加速比
FP64 64 - 128 - 2x
TF32 512 1024 1024 2048 2x
FP16 1024 2048 2048 4096 2x
BF16 1024 2048 2048 4096 2x
INT8 2048 4096 4096 8192 2x
FP8 - - 4096 8192 新增!
Hopper 第 4 代 Tensor Core
Hopper 第 4 代 Tensor Core

8 位浮点 (FP8) 内部结构

FP8 格式是一种创新的数据格式,通过将 1 位分配给范围或精度,实现了 16 位浮点(FP16/BF16)两倍的吞吐量和一半的内存占用。

8 位浮点 (FP8) 内部结构
8 位浮点 (FP8) 内部结构

Transformer 引擎

Transformer 引擎利用 Hopper Tensor Core 实现最佳的 Transformer 加速。

Transformer 引擎
Transformer 引擎

使用 FP8 进行训练和推理

FP8 格式在训练和推理方面展示了与 16 位格式相当的性能,尤其在大型语言模型中表现突出。

图表展示了 GPT-3 语言模型的困惑度(Perplexity)随训练百分比的变化,FP8 和 BF16 在不同参数量(126M、1.3B、5B、22B)下表现出相似的收敛趋势,表明 FP8 能保持模型精度。

使用 FP8 进行训练和推理
使用 FP8 进行训练和推理

H100 计算改进总结

与 A100 相比,H100 在计算吞吐量方面实现了高达 6 倍的提升,这得益于多项架构改进。

综合这些改进,H100 为全球计算需求最苛刻的工作负载提供了 6 倍的吞吐量提升。

H100 计算改进总结
H100 计算改进总结

层级与异步 (Hierarchy & Asynchrony)

并行编程性能的关键

KEYS TO PARALLEL PROGRAMMING PERFORMANCE
KEYS TO PARALLEL PROGRAMMING PERFORMANCE

并行编程性能主要依赖于两个核心要素:数据局部性和异步执行。

数据局部性

异步执行
* 实现独立工作的重叠执行。
* 充分利用所有计算单元。
* 在最小化同步延迟的情况下实现并发。

右侧图示展示了内存传输和处理的重叠:异步内存复制(Async Mem Copy)操作(如复制到SMEM,复制到全局内存)可以与流水线处理(Pipelined Processing)和独立线程工作(Independent Threads Work)并行执行,从而实现内存传输与处理的重叠。

数据局部性和 GPU 层级结构

DATA LOCALITY AND GPU HIERARCHY
DATA LOCALITY AND GPU HIERARCHY

性能和效率是数据局部性的函数。CUDA通过分层编程模型暴露数据局部性:
* Kernel (核函数) 对应于 Grid of Thread Blocks of Threads (由线程块组成的网格,线程块再由线程组成)。
* Thread Block (线程块) 被调度到单个 SM (流式多处理器) 上。
* SM 为协同执行提供资源。

整个GPU和SM之间存在较大的尺寸差异,因此需要将线程块编程模型扩展到SM组。H100 GPU拥有132个SM。

线程块集群

THREAD BLOCK CLUSTERS
THREAD BLOCK CLUSTERS

线程块集群旨在程序化地利用GPU的物理层级结构。

新的层级 => Cluster (集群)
* 是SM组上的线程块组。
* 集群中的SMs总是位于同一个GPC (图形处理集群) 上。

集群能力 (Cluster Capabilities)
* 保证线程块的协同调度。
* 实现快速同步。
* 提供跨块的共享内存访问。
* 支持带有局部屏障同步的线程块到线程块通信。

左下角表格展示了CUDA视图和硬件层级的对应关系:Grid对应GPU,Cluster对应GPC,Thread Block对应SM,Threads对应Lanes。

保证线程块协同调度:集群内部

GUARANTEED THREAD BLOCK CO-SCHEDULING (Page 22)
GUARANTEED THREAD BLOCK CO-SCHEDULING (Page 22)

在集群内部,实现线程块的协同调度。
* 传统Grid模型将线程块启动到任意GPC上,不保证协同调度。
* Grid Cluster模型将线程块启动到单个GPC上,保证协同调度。

H100架构的新特性
* 线程块默认按每SM 1个的方式进行分配。
* 集群大小:最多支持16个线程块。
* CUDA通过Cooperative Group API暴露集群功能。
* 此机制促进了集群内线程之间的数据快速共享。

分布式共享内存 (DSMEM):集群内部

DISTRIBUTED SHARED MEMORY (DSMEM) (Page 23)
DISTRIBUTED SHARED MEMORY (DSMEM) (Page 23)

在集群内部,Hopper引入了分布式共享内存 (DSMEM) 机制。

A100架构:线程块通过全局内存 (Global MEM) 来访问其他线程块的共享内存 (SMEM)。
* Thread Block -> SMEM -> Global MEM <- SMEM <- Thread Block

H100架构:集群内的线程块可以直接通过SM到SM网络 (SM to SM Network) 访问其他线程块的共享内存。
* Thread Block -> SMEM <-> SM to SM Network <-> SMEM <- Thread Block

这意味着:
* 线程可以直接引用另一个线程块的共享内存,支持加载、存储、原子操作、归约、异步DMA操作和到达屏障操作。
* 专用的SM到SM网络提供对远程DSMEM的低延迟访问。
* 支持更大粒度的协作。

带屏障的块间通信

BLOCK TO BLOCK COMMUNICATION WITH BARRIER (Page 24)
BLOCK TO BLOCK COMMUNICATION WITH BARRIER (Page 24)

同一集群中的线程块可以使用DSMEM交换数据,引入屏障机制可提高效率。

通过全局内存中的标志进行数据交换 (传统方式):
* 生产者块写入数据,刷新内存,然后写入标志。
* 消费者块轮询标志,然后读取数据。
* 这种交换需要 3-4次往返到全局内存

通过DSMEM进行的单边数据交换 (Hopper上的新特性):
* 生产者块写入数据并更新屏障。
* 消费者块等待屏障,然后读取数据。
* 这种交换只需要一次到DSMEM的单向行程,实现了 7倍的延迟降低

最小延迟数据交换
* 数据和屏障在消费者的本地SMEM中原子性地更新。
* 同时支持存储和归约原子操作。

异步执行

ASYNCHRONOUS EXECUTION (Page 25)
ASYNCHRONOUS EXECUTION (Page 25)

异步执行实现了数据移动、计算和同步的程序化重叠。

右侧图示再次强调了内存传输和处理的重叠。

CUDA编程模型暴露

功能 A100 H100 中的新特性
Barrier.arrive() 异步屏障 异步事务屏障
Barrier.wait() 等待者在SMEM中自旋等待 等待者休眠直到所有线程到达
Memcpy_async() 直接复制到SMEM 异步内存复制单元 (称为TMA)

异步并发和最小化同步点是性能的关键。

异步屏障

ASYNCHRONOUS BARRIER (Page 26)
ASYNCHRONOUS BARRIER (Page 26)

异步屏障允许独立工作的重叠执行。

A100中的异步屏障
* 线程在到达屏障时被计数。
* 数据生产 -> 到达 (Arrive) -> 独立工作 (重叠执行) -> 等待 (Wait) -> 数据消费。
* 在A100中,等待者会自旋直到所有线程都到达。

屏障分为两个步骤
* Arrive (到达):表示线程已完成数据生产。
* Wait (等待):表示线程已准备好开始消费数据。

Arrive 是非阻塞的。

使用场景:与块或集群中的其他线程进行同步。

H100的新特性:等待者休眠而不是在SMEM中轮询屏障。

异步事务屏障

ASYNCHRONOUS TRANSACTION BARRIER (Page 27)
ASYNCHRONOUS TRANSACTION BARRIER (Page 27)

异步事务屏障是H100中一种新的屏障形式,具有“数据到达跟踪”功能。

H100中的异步事务屏障
* 线程在到达屏障时被计数。
* SMEM存储操作会增加数据到达事务计数。
* 等待者休眠直到所有线程都到达并且事务计数达到。

屏障计数线程和事务
* 存储操作会传递数据和事务计数。

使用场景
* 集群块到块通信带屏障。
* 异步内存复制带屏障。

带屏障的异步内存复制

ASYNC MEM COPY WITH BARRIER (Page 28)
ASYNC MEM COPY WITH BARRIER (Page 28)

在集群中,多个生产者可以在消费者处共享一个事务屏障,实现带屏障的异步内存复制。

集群中线程块之间数据交换的例子
* 左图展示了数组元素如何映射到线程块,并标记了需要传递给Thread Block0的“光环 (Halo) 元素”。
* 右图展示了Thread Block1、Thread Block2和Thread Block3作为生产者,通过Store+TC操作将数据写入Thread Block0(消费者),并共享一个事务屏障(TBar)。

带屏障的异步内存复制是单边数据交换

使用 TMA 的异步内存复制

ASYNC MEM COPY USING TMA (Page 29)
ASYNC MEM COPY USING TMA (Page 29)

Hopper引入了张量内存加速器单元 (TMA) 来实现硬件加速的内存复制。

硬件加速的内存复制
* 全局内存 (Global Mem) <-> 共享内存 (Shared Mem)。
* 集群内的共享内存 <-> 共享内存。

1D到5D张量的地址生成
* TMA负责高效地为张量数据生成地址,支持复杂的二维张量内存布局,包括基地址、张量宽度、步幅、高度、块高度、块宽度以及复制区域和填充。

简化的编程模型

与线程完全异步
* 没有地址生成或数据移动开销。
* 通过事务屏障进行同步。

异步直接复制到共享内存
* A100 使用 LDGSTs指令,地址由线程生成。
* H100 使用 TMA单元,地址由TMA生成,并能处理数据和事务计数。

完全异步的 GPU 架构

A FULLY ASYNCHRONOUS GPU ARCHITECTURE (Page 30)
A FULLY ASYNCHRONOUS GPU ARCHITECTURE (Page 30)

Hopper架构实现了端到端的完全异步流水线。

关键特性
* 异步事务屏障:实现带有同步功能的原子数据移动。
* 更高效的屏障等待机制
* 通过 TMA 进行异步内存复制。

右侧图示再次强调了这种完全异步架构下内存传输和处理的无缝重叠,展示了异步内存复制、流水线处理和独立线程工作如何并行执行。

有关CUDA异步编程的更多信息,请参阅“CUDA: New Features and Beyond (S41486, Tue 11am PT)”。

集群性能与优势

线程块集群通过编程方式利用 GPU 的层次结构,实现了以下优势:
* CUDA 的新层次结构
* 保证的线程块协同调度
* 快速同步
* 块间共享内存访问 (DSMEM)
* 具有事务屏障的最小延迟数据交换

协作执行(Cooperative execution)结合更多线程和更大的共享内存能带来更高的性能。

集群性能
集群性能

图表显示了使用集群(With Clusters)相对于不使用集群(Without Clusters)在三种工作负载上的性能提升:
* 64K FFT:2倍
* Longstaff Schwartz Pricing:2.7倍
* Histogram Collection:1.7倍

SuperPods (超级Pod)

扩展 AI 和 HPC

将深度学习 (DL) 和高性能计算 (HPC) 问题扩展到数千个 GPU 需要大规模的集体通信性能。

扩展AI和HPC通信模式
扩展AI和HPC通信模式

图示了两种通信模式:
* 双向带宽 (Bisection bandwidth):通过“全对全 (All-to-All)”模式在 GPU 之间进行广泛数据交换。
* 排名I/O带宽 (Rank I/O bandwidth) / 归约数学吞吐量 (Reduction math throughput):通过“全归约 (All-Reduce)”模式聚合数据。

DGX H100: AI 超级计算机

DGX H100 是一款 AI 超级计算机,具备强大的互连和加速能力。

DGX H100 架构概述
DGX H100 架构概述

架构特性
* 第四代 NVLink
* 每链路 25 GB/s
* 18 条链路
* 总带宽 900 GB/s

性能对比 (1 DGX / 8 GPUs)

DGX H100 性能对比表
DGX H100 性能对比表
A100 SuperPod H100 SuperPod Speedup
Dense PFLOP/s Bisection [GB/s] Reduce [GB/s]
1 DGX / 8 GPUs 2.5 2,400 150

NVLink SHARP 加速

NVLink SHARP 通过网络内计算加速数据归约操作,从而提高带宽效率。

NVLink SHARP 加速流程
NVLink SHARP 加速流程

步骤 1: 读取并归约 (Read and reduce)

步骤 2: 广播结果 (Broadcast result)
* A100: 发送 N 次写入,接收 N 次写入。
* H100 + NVLink SHARP: 发送 1 次多播写入,接收 N 次写入。

流量总结
* A100: 2N 次发送,2N 次接收。
* H100 + NVLink SHARP: N+1 次发送,N+1 次接收。

最终实现了 2倍 的有效 NVLink 带宽。

使用 NVLink 网络进行扩展

通过 NVLink 网络实现大规模集群的性能扩展。

NVLink 网络扩展架构与性能
NVLink 网络扩展架构与性能

DGX A100 256 Pod
* 使用 IB HDR 脊叶交换机(spine switches)。
* 连接 32 个节点(256 个 GPU)。

DGX H100 256 Pod
* 使用新型 NVLink Switch。
* 完全 NVLink 连接。
* 大规模双向带宽。
* 连接 32 个节点(256 个 GPU)。

性能对比

NVLink 网络扩展性能对比表
NVLink 网络扩展性能对比表
A100 SuperPod H100 SuperPod Speedup
Dense PFLOP/s Bisection [GB/s] Reduce [GB/s]
1 DGX / 8 GPUs 2.5 2,400 150
32 DGXs / 256 GPUs 80 6,400 100

NVLink 网络加速神经网络推荐系统

NVLink 网络显著加速了神经网络推荐系统的训练性能。

神经网络推荐引擎和训练性能
神经网络推荐引擎和训练性能

神经网络推荐引擎 (Neural Recommender Engine)
* 通过“全对全 (All-to-All)”模式在模型并行和数据并行之间重新分配。
* 嵌入表 (Embedding tables) 采用模型并行,并分布在不同的 GPU 上,例如一个拥有 14 TB 嵌入表的推荐系统。

训练性能 (Training Performance)
* A100 IB (InfiniBand) 作为基准 (1x)。
* H100 IB 实现了约 2.7x 的性能提升。
* H100 NVLink Network 实现了约 4.5x 的性能提升。

NVLink 网络的内部机制

NVLink 网络通过特定的地址空间和连接设置,实现了 GPU 之间安全高效的通信。

NVLink 网络内部机制
NVLink 网络内部机制

NVLink 与 NVLink Network 的对比

特性 NVLink NVLink Network
地址空间 (Address Spaces) 1 (共享) N (独立)
请求寻址 (Request Addressing) GPU 物理地址 网络地址
连接设置 (Connection Setup) 引导过程期间 运行时通过软件 API 调用
隔离性 (Isolation)

超越 NVLink: 下一代 NDR InfiniBand

下一代 NDR InfiniBand 提供了更高的带宽和更强的网络内计算能力。

ConnectX-7 NDR NIC 和 Quantum2 NDR Switch
ConnectX-7 NDR NIC 和 Quantum2 NDR Switch

ConnectX-7 NDR NIC
* 100 GB/s 总带宽,是 HDR 的 2 倍。
* 针对小消息的全对全加速。
* 比 HDR 提速高达 4 倍。

Quantum2 NDR Switch
* 高基数交换机设计。
* 支持第三代 SHARP。
* 网络内计算加速归约操作。
* 支持新的多租户功能,具备 32 个并发 AI SHARP 树。

利用第三代 InfiniBand SHARP 实现多租户加速归约

第三代 InfiniBand SHARP 显著提升了多租户环境下的归约操作性能和支持能力。

第三代 InfiniBand SHARP 多租户加速归约
第三代 InfiniBand SHARP 多租户加速归约

SHARP 聚合节点在网络中执行归约操作,H100 的 SHARP v3 支持并发执行,从而实现多租户。

强扩展到数千个 GPU

DGX H100 Pod 实现了数千个 GPU 的强大扩展能力和卓越性能。

DGX H100 1K Pod 扩展架构与性能
DGX H100 1K Pod 扩展架构与性能

DGX H100 1K Pod 架构

性能对比

DGX H100 1K Pod 性能对比表
DGX H100 1K Pod 性能对比表
A100 SuperPod H100 SuperPod Speedup
Dense PFLOP/s Bisection [GB/s] Reduce [GB/s]
1 DGX / 8 GPUs 2.5 2,400 150
32 DGXs / 256 GPUs 80 6,400 100
128 DGXs / 1024 GPUs 320 12,800 100

云计算 (Cloud Computing)

机密计算

机密计算旨在保护使用中的数据和代码免受未经授权的访问。

机密计算威胁与需求
机密计算威胁与需求

机密计算 (CC) 威胁
* 恶意攻击者
* 内部人员 (云系统管理员)
* 服务器软件 (管理程序/主机操作系统)

机密计算必须提供
* 机密性
* 完整性

CC Off, 单 GPU (H100)
在传统设置中,主机操作系统 (Host OS) 及其管理程序 (Hypervisor) 对 GPU 拥有完全访问权限,且管理程序与 GPU 之间没有加密。

NVIDIA 加速机密计算 (单租户,单 GPU)

NVIDIA 加速机密计算旨在保护使用中的数据和代码免受未经授权的访问。H100 是全球首款原生支持机密计算的 GPU。

NVIDIA 加速机密计算 (单租户,单 GPU)
NVIDIA 加速机密计算 (单租户,单 GPU)

基于硬件的可信执行环境 (TEE)
* TEE 扩展到 GPU。
* PCIE/NVlink 流量的硬件加速加密 (AES-GCM 256)。

硬件信任根 (Hardware Root of Trust)
* 经过认证的固件、测量和 GPU 认证。

无需更改 CUDA 应用程序代码
* 虚拟化硬件和 NVIDIA CPU 驱动程序隐藏了所有细节。

安全直通 (Secure Pass-Thru)
将整个 GPU 独占分配给虚拟机 (VM)。

CC On, 单租户,单 GPU (H100)
在启用 CC 的情况下,CPU 上的 TEE (包含机密虚拟机 Confidential VM1 和 NVIDIA 驱动) 通过加密传输与 GPU 上的 CC On GPU (H100) 进行通信。管理程序无法访问 TEE 和 CC On GPU。

NVIDIA 加速机密计算 (单租户,多 GPU)

NVIDIA 加速机密计算,保护使用中的数据和代码免受未经授权的访问,支持多 GPU 配置。

NVIDIA 加速机密计算 (单租户,多 GPU)
NVIDIA 加速机密计算 (单租户,多 GPU)

该架构与前一页类似,但展示了单租户、多 GPU 的配置。
* 多个 TEE (例如 Confidential VM1 和 Confidential VM2) 可以分别与不同的 CC On GPU (H100) 实例进行加密通信。
* 每个 TEE 都独占分配一个 GPU,并通过加密传输确保数据和代码在使用中的机密性和完整性。

核心特性与单 GPU 场景相同
* 基于硬件的可信执行环境 (TEE):TEE 扩展到 GPU,并通过硬件加速加密 (AES-GCM 256) 保护 PCIe/NVLink 流量。
* 硬件信任根 (Hardware Root of Trust):提供经过认证的固件、测量和 GPU 认证。
* 无需更改 CUDA 应用程序代码:虚拟化硬件和 NVIDIA CPU 驱动程序处理所有底层细节。
* 安全直通 (Secure Pass-Thru):将整个 GPU 独占分配给虚拟机 (VM)。

面向小规模工作负载的高效配置

对于小规模工作负载,当前的整GPU云实例常常利用不足。这意味着单个用户可能占用整个GPU,而其计算需求远未达到GPU的全部能力,导致资源浪费。

云计算与配置:小规模工作负载下的GPU利用不足
云计算与配置:小规模工作负载下的GPU利用不足

图片“Page 46”展示了传统配置模式下,多个独立运行的GPU实例和用户,以及单个用户占用整个GPU但需求量小的情况,凸显了如何为小规模工作负载用户进行有效配置的问题。

NVIDIA MIG 技术

NVIDIA的MIG(Multi-Instance GPU)技术在A100上推出,旨在解决小规模工作负载的配置效率问题。

云计算与配置:NVIDIA MIG技术
云计算与配置:NVIDIA MIG技术

图片“Page 47”阐释了MIG作为解决方案。通过MIG,小规模工作负载可以共享一个GPU实例。MIG允许将一个物理GPU划分为最多7个GPU实例,这些实例可以动态重新配置。每个MIG实例都享有专用资源,以保证服务质量(QOS)。

HOPPER H100 多实例 GPU:更快更安全

Hopper H100架构下的多实例GPU提供了多租户、单GPU支持,并带来了性能和安全性的显著提升。

HOPPER H100 多实例 GPU 架构
HOPPER H100 多实例 GPU 架构

图片“Page 48”详细展示了H100多实例GPU的架构,其核心特点包括:
* 更高的MIG性能
* 计算能力提升3X。
* 内存带宽提升2X。

总结

架构亮点

总结页
总结页

Hopper架构在性能、效率和安全性方面实现了代际飞跃。

Hopper H100 GPU 资源

HOPPER H100 GPU
HOPPER H100 GPU

图片“Page 50”展示了H100 GPU的外观,并提供了更多关于Hopper H100的资源:
* H100白皮书http://www.nvidia.com/hopper-architecture-whitepaper
* 更多关于Hopper H100的GTC讲座
* CUDA: New Features and Beyond (S41486, Tue 11am PT)
* Optimizing Applications on the Latest NVIDIA GPUs (S41489, Tue 12pm PT)
* How to Achieve Million-fold Speedups in Data Center Performance (S41886, Wed 6pm PT)